package com.google.fbyoutube.client;

import java.util.List;
import java.util.Map;

import com.google.fbyoutube.shared.ytComment;
import com.google.fbyoutube.shared.ytVideoEntry;
import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * The async counterpart of <code>GreetingService</code>.
 */
public interface YouTubeAppServiceAsync {
	
	void getTextComment(String vodId, AsyncCallback<List<ytComment>> callback);

	void getRelatedVideos(String vodId,	AsyncCallback<List<ytVideoEntry>> callback);

	void getTopRateVideos(String cat, Map<String, String> options,
			AsyncCallback<List<ytVideoEntry>> callback);

	void getMostPopularVideos(String cat, Map<String, String> options,
			AsyncCallback<List<ytVideoEntry>> callback);

	void getMostViewedVideos(String cat, Map<String, String> options,
			AsyncCallback<List<ytVideoEntry>> callback);

	void searchVideos(Map<String, String> options,
			AsyncCallback<List<ytVideoEntry>> callback);

	void getVideoById(String vodId, AsyncCallback<ytVideoEntry> callback);

	void getTopFavoriteVideos(Map<String, String> options, AsyncCallback<List<ytVideoEntry>> callback);

	void getRecommendationVideos(AsyncCallback<List<ytVideoEntry>> callback);

	void getYTFavoriteVideos(AsyncCallback<List<ytVideoEntry>> callback);

	void addYTFavoriteVideo(String vodId, AsyncCallback<Boolean> callback);

	void deleteYTFavoriteVideo(String vodId, AsyncCallback<Boolean> callback);

	void getYTUploadVideos(String username, AsyncCallback<List<ytVideoEntry>> callback);

	void getVideos(String feedurl, AsyncCallback<List<ytVideoEntry>> callback);

}
